import argparse
from mysql_val import val_mysql
from readis_val import val_redis
from ssh_val import val_ssh

# 创建命令行解析器对象
parser = argparse.ArgumentParser(description="多命令实例")
# 创建子命令容器
subparsers = parser.add_subparsers(dest="sub_command")
# 创建 MySQL 子命令解释器与参数列表
mysql_parser = subparsers.add_parser("mysql", help="MySQL 漏洞利用")
mysql_parser.add_argument("--host", "-H", dest="host", type=str, default="127.0.0.1",
                          help="MySQL 主机 (默认 127.0.0.1)")
mysql_parser.add_argument("--port", "-p", dest="port", type=int, default=3306, help="MySQL 端口 (默认 3306)")
mysql_parser.add_argument("--user", "-u", dest="user", type=str, default="root", help="MySQL 用户名 (默认 root)")
mysql_parser.add_argument("--file", "-F", dest="file", type=str, default="./pass.txt",
                          help="爆破密码本路径 (默认 ./pass.txt)")
# 创建 Redis 子命令解释器与参数列表
redis_parser = subparsers.add_parser("redis", help="Redis 漏洞利用")
redis_parser.add_argument("--host", "-H", dest="host", type=str, default="127.0.0.1",
                          help="Redis 主机 (默认 127.0.0.1)")
redis_parser.add_argument("--port", "-p", dest="port", type=int, default=6379, help="Redis 端口 (默认 6379)")
redis_parser.add_argument("--file", "-F", dest="file", type=str, default="./pass.txt",
                          help="爆破密码本路径 (默认 ./pass.txt)")
redis_parser.add_argument("--public_key", "-K", dest="public_key", type=str, default=None,
                          help="爆破密码本路径 (默认 None)")

ssh_parser = subparsers.add_parser("ssh", help="ssh 爆破")
ssh_parser.add_argument("--host", "-H", dest="host", type=str, default="127.0.0.1",
                        help="ssh (默认 127.0.0.1)")
ssh_parser.add_argument("--port", "-p", dest="port", type=int, default=3306, help="ssh 端口 (默认 22)")
ssh_parser.add_argument("--user", "-u", dest="user", type=str, default="root", help="ssh 用户名 (默认 root)")
ssh_parser.add_argument("--file", "-F", dest="file", type=str, default="./pass.txt, ./pass.txt",
                        help="爆破密码本路径 (默认 ./pass.txt)")

args = parser.parse_args()
if args.sub_command == "mysql":
    print(f"MySQL 爆破: 主机 {args.host}, 端口 {args.port}, 用户 {args.user}, 密码本 {args.file}")
    val_mysql(host=args.host, port=args.port, user=args.user, file=args.file)
elif args.sub_command == "redis":
    print(f"Redis 爆破: 主机 {args.host}, 端口 {args.port}, 密码本 {args.file}")
    val_redis(host=args.host, port=args.port, file=args.file, public_key=args.public_key)
elif args.sub_command == "ssh":
    print(f"SSH 爆破: 主机 {args.host}, 端口 {args.port}, 用户 {args.user}, 密码本 {args.file}")
    val_ssh(host=args.host, port=args.port, user=args.user, file=args.file)
else:
    print("输入子命令有误,请检查后重新输入...")